/**
 ***********************************************************************************************************
 * 
 ***********************************************************************************************************
 * @file rb_hw_buffer_usage.h
 ***********************************************************************************************************/

#pragma once

#ifdef  HEADER_MSG
#pragma HEADER_MSG(rb_hw_buffer_usage.h)
#endif

/***********************************************************************************************************
 * Includes
 ***********************************************************************************************************/
namespace rb_hw_buffer_usage
{
    enum MapType
    {
        HBM_READ_ONLY = 1,
        HBM_WRITE_ONLY,
        HBM_READ_WRITE,
        HBM_WRITE_DISCARD,
        HBM_WRITE_NO_OVERWRITE
    };

    enum Usage
    {
        HBU_DEFAULT         = 0x0001,
        HBU_GPUREAD         = HBU_DEFAULT,
        HBU_CPUREAD         = 0x0002,
        HBU_CPUWRITE        = 0x0004,
        HBU_GPUWRITE        = 0x0008,   // Render Target / R2VB
        HBU_DEPTHSTENCIL    = 0x0010,
        HBU_VERTEX_BUFFER   = 0x0020,
        HBU_INDEX_BUFFER    = 0x0040,
        HBU_CONSTANT_BUFFER = 0x0080,
        HBU_SHADER_RESOURCE = 0x0100,
        HBU_RENDER_TARGET   = 0x0200,
        HBU_SHARED          = 0x0400
    };

    enum MemPool
    {
        MP_GPU          = 1<<0,
        MP_CPU          = 1<<1
    };
}